iT邦幫忙

0

Leetcode 第一天

  • 分享至 

  • xImage
  •  

704.二分法
https://leetcode.com/problems/binary-search/description/?envType=list&envId=pgm5myyh

class Solution {
    public int search(int[] nums, int target) {
        if(nums.length==1 && nums[0]==target){
            return 0;
        }
        int left = 0;
        int right = nums.length;
        while(right > left){
            int mid = (left+right)/2;
            if(nums[mid] > target){
                right = mid;
            }else if(nums[mid] < target){
                left = mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }
}

需注意以下

1.right的界線位置

如使用

int right = nums.length-1;
會導致nums少遍歷幾個元素

2.nums.length==1需另外處理

因left及right會相等,無法進入while迴圈處理

27.移除元素
https://leetcode.com/problems/remove-element/description/?envType=list&envId=pgm5myyh

class Solution {
    public int removeElement(int[] nums, int val) {
        int slow=0;
        for(int fast=0;fast<nums.length;fast++){
            if(nums[fast]!=val){
                nums[slow]=nums[fast];
                slow++;
            }
        }
        return slow;
    }
}

解題概念:

使用快慢指針,當快指針位置不等於val,便讓nums[slow]=快指針位置,以及slow++。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言